import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    cartitem:JSON.parse(localStorage.getItem("cart"))||[],
    allchecked:false,
    totalCount:0,
    totalPrice:0,
  },
  mutations: {
    getcartlist(state,item){
      var index =state.cartitem.findIndex((ele)=>{
        return ele._id===item._id
      })
      if(index!=-1){
        state.cartitem[index].num++
      }else{
        item.num=1
        item.checked=false
        state.cartitem.push(item)
        // state.showitem.push(item)
      }
      // console.log(state.cartitem)
      localStorage.setItem("cart",JSON.stringify(state.cartitem))
    },
    // 单选
    onechecked(state,item){
      state.cartitem.forEach((ele)=>{
        if(ele._id===item.id){
          ele.checked=item.checked
        }
      })
      state.allchecked=state.cartitem.every((ele)=>{
        return ele.checked===true
      })
      // 计算数量
      state.totalCount=0;
      state.totalPrice=0;
      state.cartitem.forEach((ele)=>{
        if(ele.checked===true){
          state.totalCount+=ele.num;
          state.totalPrice+=ele.num*ele.salePrice
        }
      })
    },
    // 全选
    allclick(state,item){
      state.allchecked=item
      state.cartitem.forEach((ele)=>{
        ele.checked=item
      })
      state.totalCount=0;
      state.totalPrice=0;
      state.cartitem.forEach((ele)=>{
        if(ele.checked===true){
          state.totalCount+=ele.num;
          state.totalPrice+=ele.num*ele.salePrice
        }
      })
    },
    // 数量加
    addnums(state,item){
      state.cartitem.forEach((ele)=>{
        return ele._id===item._id
      })
      item.num++
      state.totalCount=0;
      state.totalPrice=0;
      state.cartitem.forEach((ele)=>{
        if(ele.checked===true){
          state.totalCount+=ele.num;
          state.totalPrice+=ele.num*ele.salePrice
        }
      })
      localStorage.setItem("cart",JSON.stringify(state.cartitem))
    },
    // 数量减
    ninmusnums(state,item){
      state.cartitem.forEach((ele)=>{
        return ele._id===item._id
      })
      if(item.num===1){
        item.num=1
        return
      }
      item.num--
      state.totalCount=0;
      state.totalPrice=0;
      state.cartitem.forEach((ele)=>{
        if(ele.checked===true){
          state.totalCount+=ele.num;
          state.totalPrice+=ele.num*ele.salePrice
        }
      })
      localStorage.setItem("cart",JSON.stringify(state.cartitem))
    },
    // 删除
    deleone(state,item){
      var temp=[...state.cartitem]
        temp.forEach((ele,index)=>{
          if(ele._id===item._id){
            temp.splice(index,1)
          }
        })
        
        state.cartitem=temp
        console.log(temp)
        console.log(state.cartitem)
        localStorage.setItem("cart",JSON.stringify(state.cartitem))
    }
  },
  actions: {
    getcartlist(context,item){
      // console.log(item);
      context.commit("getcartlist",item)
    },
    // 单选
    onechecked(context,item){
      // console.log(item)
      context.commit("onechecked",item)
    },
    allclick(context,item){
      // console.log(item)
      context.commit("allclick",item)
    },
    // 数量加
    addnums(context,item){
      // console.log(item)
      context.commit("addnums",item)
    },
    // 数量减
    ninmusnums(context,item){
      // console.log(item)
      context.commit("ninmusnums",item)
    },
    // 删除
    deleone(context,item){
      context.commit("deleone",item)
    }
  },
  modules: {
  }
})
